Simultaneous Multi-Threading, or SMT, is a processor design in which a single CPU can execute multiple program threads in parallel. A “thread,” as understood by those having ordinary skill in the art, is a stream of instructions (e.g., add, divide, branch, etc.) that are executed by the processor. The Pentium 4 Processor with HT Technology from Intel Corp. of Santa Clara, Calif. is an example of an SMT processor, as is the POWER5 processor from International Business Machines Corp. of Armonk, N.Y. For purposes of this description, the terms “processor” and “CPU” are used interchangeably.
In a typical SMT processor, one physical CPU can have two threads running simultaneously. This is in contrast to a duo core processor where there are actually two discrete physical processors combined in a single package, with each core being capable of executing one thread. Depending on the particular processor manufacturer, SMT processors can provide significant improvements in processor throughput (e.g., 20%-30% according to Intel, 30%-40% according to IBM) over traditional or single threaded processors. The term “throughput” is used herein to mean the rate at which a processor can execute instructions, typically expressed in instructions per second.
A drawback of SMT processors is that it causes certain software operating systems to distort the level of CPU usage. For example, Windows Server 2003 has been known to report significantly distorted CPU utilization on Intel SMT processors. In many case, an SMT processor was reported by Windows Server 2003 as being only 50% busy when it was actually running closer to 83% of its maximum throughput. Such a distortion of the processor's usage may result in a misperception that the processor can accept additional processing load, which may lead to sluggish or otherwise unacceptable system performance. The distortion may also adversely impact the ability of capacity planners, for example, to accurately forecast the number of servers a company may require going forward.
Accordingly, what is needed is a way to more accurately estimate CPU usage on SMT processors. More specifically, what is needed is a way to determine a CPU usage adjustment factor for SMT processors and to automatically apply the CPU usage adjustment factor to provide a more accurate CPU usage estimate for SMT processors.